perm filename MC.SAI[1,DEK] blob sn#347077 filedate 1978-04-13 generic text, type T, neo UTF8
00100	begin comment testing new version of pollard factorization;
00150	external procedure bail;
00200	integer array pr[1:79000];
00250	integer t;
00300	integer procedure m(integer p);
00400	begin integer x,y,k,l;
00450	integer a,b,c;
00500	k←1;l←1;x←2;y←5 mod p;
00600	while x neq y do
00700	  begin k←k-1; if k=0 then
00800	    begin x←y;l←l+l;k←l;
00900	    end;
01000	a←y lsh -10; b←y land '1777;
01100	y←(a↑2) mod p;
01200	y←((y lsh 10)+2*a*b) mod p;
01300	y←((y lsh 10)+b↑2+1) mod p;
01400	  end;
01600	return(l+l-k);
01700	end;
01740	setformat(7,7);
01750	bail;
01800	pr[1]←3; t←1;
01900	while pr[t]<1000000 do
02000	begin integer i,n,q; n←pr[t];
02100	while true do
02200	begin n←n+2; i←1;
02300	while true do begin q←n div pr[i]; if n=q*pr[i] then done;
02400	if q<pr[i] then done; i←i+1; end;
02500	if n neq q*pr[i] then done;
02600	end;
02700	t←t+1; pr[t]←n;
02800	if t mod 1000 = 0 then print(n);
02900	end;
03000	begin integer i,j; real maxr,r;
03050	integer jj,maxm,mm;
03100	maxr←0.0;
03150	mm←0;
03200	for i←1 step 1 until t-1 do
03300	begin mm←m(pr[i]); r←mm/sqrt(pr[i]);
03350	if mm>maxm then begin jj←i; maxm←mm end;
03400	if r>maxr then begin j←i; maxr←r end;
03500	if i mod 1000 = 0 then print('15&'12,pr[i],r,j,maxr);
03600	end;
03700	print('15&'12,"Worst case ",pr[j],m(pr[j]),maxr,pr[jj],maxm);
03750	end;
03800	end